#include "cabecera.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>


struct monomio* creaMonomio(int coeficiente, int exponente, struct monomio* siguiente){
	struct monomio* aux;
	aux = (struct monomio*) malloc(sizeof(struct monomio));
	(*aux).coeficiente = coeficiente;
	(*aux).exponente = exponente;
	(*aux).siguiente = siguiente;
	return aux;
}

struct monomio* creaPolinomio(int N){
	int i,indep, expo;
	struct monomio* anterior;
	for(i=0 ; i<N ; i++){
			printf("Introduzca el exponente del monomio %d: ",i);
			scanf("%d", &expo);
			if(expo == 0){
				printf("Introduzca el valor del termino independiente: ");
				scanf("%d", &indep);
			}
			else{
				printf("Introduzca el coeficiente del monomio de grado %d: ", expo);
				scanf("%d", &indep);
			}
			if(i == 0){
				anterior = creaMonomio(indep, expo, NULL);
			}
			else
			{
				anterior = creaMonomio(indep, expo, anterior);
			}
		}
	return anterior;
}

void evaluaPolinomio(struct monomio* polinomio, int N){
	int i;
	float ev = 0.0, evaluado;
	struct monomio* aux = polinomio;
	for(i=0; i<11; i++){
		while(polinomio != NULL){
			evaluado += ((*polinomio).coeficiente) * pow(ev,(*polinomio).exponente);
			polinomio = (*polinomio).siguiente;
		}
		polinomio = aux;
		printf("[X = %.3f] -->       f(%.3f) = %.3f\n", ev, ev, evaluado);
		ev += 0.5;
		evaluado = 0;
	}
}


